package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**
 * 包位置：java.io
 * File   表示  文件或者文件夹【存在硬盘】
 * 测试：io包下创建文件 demo.txt
 * 验证项目下是否存在demo.txt 文件
 * 创建File文件类
 * File file=new File(“传入路径”);
 * 构造器：传入路径  / \表示路径
 * /  表示路径  文件下载【本地】---本次测试
 * \表示路径  文件上传【服务器】--网络
 * File文件/文件夹类可以做什么：【常用方法】
 * 1.查看文件或者文件夹的属性信息（名字  大小  判断文件是否存在  等）
 * 2。操作文件或者文件夹（创建，删除等）
 * 3.访问一个目录的子项（访问文件夹下的文件夹操作）
 */
public class FileAPI {
    @Test
    public void testFile() {
        File file = new File("sr" +
                "c" + File.separator + "mai" +
                "n" + File.separator + "jav" +
                "a" + File.separator + "co" +
                "m" + File.separator + "ted" +
                "u" + File.separator + "ap" +
                "i" + File.separator + "i" +
                "o" + File.separator + "demo.txt" +
                "" + File.separator);
        //验证。demo.txt文件是否存在
        boolean b = file.exists();
        System.out.println("测试demo.txt文件是否存在：" + b);
    }

    /**
     * 针对文件的操作方法
     * getName()   返回值：String
     * 获取文件/文件夹的名字【注意：不管file是否存在，指挥拿名】
     * length()   返回值：long
     * 返回当前文件的大小(字节量)--汉字：3个字节量
     * exists()   返回值  boolean
     * 判断file文件是否存在，存在true  反之
     */
    @Test
    public void testGLE() {
        File file = new File("1sr" +
                "c" + File.separator + "mai" +
                "n" + File.separator + "jav" +
                "a" + File.separator + "co" +
                "m" + File.separator + "ted" +
                "u" + File.separator + "ap" +
                "i" + File.separator + "i" +
                "o" + File.separator + "demo.txt" +
                "" + File.separator);
        String str = file.getName();
        System.out.println("file文件名字是:" + str);
        long length = file.length();
        System.out.println("file文件字节量是:" + length);
    }

    /**
     * 操作文件或者文件夹(创建，删除)
     * createNewFile()
     * 创建新文件，创建不成功，如果不成功抛出IO异常
     */
    @Test
    public void testCreateNewFile() throws IOException {
        //用程序创建一个文件
        File file = new File("." + File.separator + "text.txt");
        //创建text.txt---判断当前文件夹下是否存在，不存在--创建
        //                                     存在--不创建
        if (!file.exists()) {//text.txt文件不存在
            //创建文件
            System.out.println("文件是不存在");
            file.createNewFile();
            System.out.println("文件创建完毕");
        } else {
            System.out.println("文件存在");
        }

    }

    /**
     * 拓展：存放文件位置： Maven项目：main  程序入口
     * test 程序测试
     * 查找：main下或者test下：必须从src位置开始找
     * .    当前项目下
     */
    @Test
    public void testPath() throws IOException {
        //FileAPI.java相对于项目名  "API"下
        File file = new File("." + File.separator + "1");
        //查看 file  路径
        //  System.out.println(file.getCanonicalPath());
        System.out.println("API项目路径下文件是否存在:" + file.exists());
    }

    /**
     * 文件删除操作
     * delete()
     * 删除已经创建完毕文件
     */
    @Test
    public void testDelete() {
        //创建File
        File file = new File("." + File.separator + "text.txt");
        //删除  如果由文件  删除   没有没有   不删
        if (file.exists()) {
            System.out.println("有文件");
            file.delete();
            System.out.println("文件删除成功~");
        } else {
            System.out.println("文件没有别删啦");
        }
    }

    /**
     * mkdir()
     * 在当前项目下创建一个【目录：文件夹】
     */
    @Test
    public void testMkdir() {
        //创建文件夹---创建在API文件夹下demo文件夹
        File file = new File("." +
                "" + File.separator + "" +
                "demo"+File.separator+"abc" +
                ""+File.separator+"bcd");
        //创建文件夹---如果没有文件夹  创建 |  有  不创建
        if (!file.exists()) {
            System.out.println("没有文件夹");
            file.mkdir();
            System.out.println("创建成功");



        } else {
            System.out.println("已经存在，别创建了~");
        }

    }

    /**
     * isDirectory()   判断是否是【目录：文件夹】，返回true
     * isFile()        判断是否是文件，返回true
     * 0
     */
    @Test
    public void testListFiles() {
        //需求;获取当前"API"文件夹  下  所有的文件，文件夹
        File file = new File(".");
        // 只获取文件夹
        if (file.isDirectory()) {
            //获取文件夹子项
            File[] files = file.listFiles();
            //打印获取到的文件夹名字
            for (int i = 0; i < files.length; i++) {
                System.out.println(files[i]);
            }
        }
    }

}














